﻿/*
 * zproc.h
 *
 *  Created on: 2014年10月4日
 *      Author: Fifi Lyu
 */

#ifndef INCLUDE_ZPSOE_ZPROC_H_
#define INCLUDE_ZPSOE_ZPROC_H_

#include "zpsoe/common.h"
#include <string>
#include <vector>

using std::vector;
using std::string;

namespace zpsoe {

namespace zproc {
// 返回当前工作目录绝对路径
ZPSOE_SHARED_LIB_API bool current_work_dir(string &buf);

// 返回当前进程文件绝对路径
ZPSOE_SHARED_LIB_API bool current_exe_path(string &buf);

// 返回当前进程文件所在目录(执行目录)
ZPSOE_SHARED_LIB_API bool current_exe_dir(string &buf);

#ifdef PLATFORM_WIN32
// 创建进程锁，防止运行多个进程实例
ZPSOE_SHARED_LIB_API bool lock_proc(const string &proc);

// 解锁进程锁
ZPSOE_SHARED_LIB_API bool unlock_proc(const string &proc);
#else
// 创建进程锁，防止运行多个进程实例
ZPSOE_SHARED_LIB_API bool lock_proc(
        const string &proc, const pid_t pid, const string &prefix = "/var/run");

// 解锁进程锁
ZPSOE_SHARED_LIB_API bool unlock_proc(
        const string &proc, const string &prefix = "/var/run");
#endif
} /* namespace zproc */

} /* namespace zpsoe */

#endif /* INCLUDE_ZPSOE_ZPROC_H_ */
